@ /0

Inicio JP InicioTeste

BufIOFim  K BufIO  ; Ponteiro para fim do buffer IO
BufIO     $ =8
TMP0      K /0
TMP1      K /0
TMP2      K /0
TMP3      K /0
TMP4      K /0
SP        K /0
FP        K /0
FPTMP     K /0
CP0       K /0     ; Parametro origem para a funcao COPY
CP1       K /0     ; Parametro destino para a funcao COPY
CP2       K /0     ; Parametro com tamanho do destino para a funcao COPY
; Constantes Numericas
DoisHex   K /2
TrintaHex K /30
CemHex    K /100
DezDec    K =10
DezMilDec K =10000
; Constantes Caracteres
CR        K /d
Sinal     K /2d
Sinal_    K /2d20
; Constantes Operadores
Store     MM /0    ; Base para instrucao de store
Load      LD /0    ; Base para instrucao de load
Soma      +  /0    ; Base para instrucao de soma

Orig K =0
K =1
K =2
K =3
K =4
K =5
K =6
K =7
K =8
K =9
K =10
K =11
K =12
K =13
K =14
K =15
Dest $ =16

InicioTeste LV Orig
MM CP0
LV Dest
MM CP1
LV =32
MM CP2
SC COPY
HM /0

; SUBROTINA COPY
; Rotina que recebe como primeiro parametro um endereco de origem e como segundo um
; endereco de destino. O terceiro parametro e o tamanho em bytes a ser copiado
; Utilizado para transferir para um RA os dados de um vetor ou uma estrutura
COPY K /0

CopyWordC LD CP2
JZ EndC
LD CP2  ; Desconta -2 do tamanho a ser copiado
- DoisHex
MM CP2
; Monta a instrucao de carregar a WORD
LD CP0
+ Load
MM LeOrigC
; Monta a instrucao de copiar a WORD
LD CP1
+ Store
MM SalvaDestC

LeOrigC LD /0
SalvaDestC MM /0

LV /2    ; Avanca uma WORD na origem
+ CP0
MM CP0
LV /2    ; Avanca uma WORD no destino
+ CP1
MM CP1
JP CopyWordC

EndC RS COPY ; FIM DA SUBROTINA COPY

# Inicio